Skip to content

Update following the release of Elixir 1.20 - #22

Merged
takasehideki merged 3 commits into
mainfrom
bump_202605
Jun 9, 2026
Merged

Update following the release of Elixir 1.20#22
takasehideki merged 3 commits into
mainfrom
bump_202605

Conversation

@takasehideki

@takasehideki takasehideki commented Jun 8, 2026

Copy link
Copy Markdown
Member

Elixir 1.20 Released!! ということで Elixir/Erlang のバージョンを整理しました.
これまでの慣例に従って latest は 1世代前の humble-ex1.19.5-otp28.5 として .tool-version も合わせています.この際に型推論の Warning を観測したのでシュッと修正しました.mix deps.update --all も適用済みです.

rclex にて CI test をパスしたらマージします.
Lyrical 対応と,latest をそろそろ Jazzy にする?は next task ということで,,,

```
$ mix compile
Compiling 2 files (.ex)
     warning: a struct for Mix.Tasks.RclexDocker.Build.Options is expected on struct update:

         %Mix.Tasks.RclexDocker.Build.Options{acc | dry_run: true}

     but got type:

         dynamic()

     where "acc" was given the type:

         # type: dynamic()
         # from: lib/mix/tasks/rclex_docker/build.ex:139:43
         acc

     when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Build.Options{}".

     hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:

         user = some_function()
         %User{user | name: "John Doe"}

     it is enough to write:

         %User{} = user = some_function()
         %{user | name: "John Doe"}

     typing violation found at:
     │
 141 │         "--dry-run" -> %Options{acc | dry_run: true}
     │                        ~
     │
     └─ lib/mix/tasks/rclex_docker/build.ex:141:24: Mix.Tasks.RclexDocker.Build.parse_args/1

     warning: a struct for Mix.Tasks.RclexDocker.Push.Options is expected on struct update:

         %Mix.Tasks.RclexDocker.Push.Options{acc | dry_run: true}

     but got type:

         dynamic()

     where "acc" was given the type:

         # type: dynamic()
         # from: lib/mix/tasks/rclex_docker/push.ex:118:43
         acc

     when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Push.Options{}".

     hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:

         user = some_function()
         %User{user | name: "John Doe"}

     it is enough to write:

         %User{} = user = some_function()
         %{user | name: "John Doe"}

     typing violation found at:
     │
 120 │         "--dry-run" -> %Options{acc | dry_run: true}
     │                        ~
     │
     └─ lib/mix/tasks/rclex_docker/push.ex:120:24: Mix.Tasks.RclexDocker.Push.parse_args/1

     warning: a struct for Mix.Tasks.RclexDocker.Build.Options is expected on struct update:

         %Mix.Tasks.RclexDocker.Build.Options{acc | latest: true}

     but got type:

         dynamic()

     where "acc" was given the type:

         # type: dynamic()
         # from: lib/mix/tasks/rclex_docker/build.ex:139:43
         acc

     when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Build.Options{}".

     hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:

         user = some_function()
         %User{user | name: "John Doe"}

     it is enough to write:

         %User{} = user = some_function()
         %{user | name: "John Doe"}

     typing violation found at:
     │
 142 │         "--latest" -> %Options{acc | latest: true}
     │                       ~
     │
     └─ lib/mix/tasks/rclex_docker/build.ex:142:23: Mix.Tasks.RclexDocker.Build.parse_args/1

     warning: a struct for Mix.Tasks.RclexDocker.Build.Options is expected on struct update:

         %Mix.Tasks.RclexDocker.Build.Options{acc | multi: true}

     but got type:

         dynamic()

     where "acc" was given the type:

         # type: dynamic()
         # from: lib/mix/tasks/rclex_docker/build.ex:139:43
         acc

     when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Build.Options{}".

     hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:

         user = some_function()
         %User{user | name: "John Doe"}

     it is enough to write:

         %User{} = user = some_function()
         %{user | name: "John Doe"}

     typing violation found at:
     │
 143 │         "--multi" -> %Options{acc | multi: true}
     │                      ~
     │
     └─ lib/mix/tasks/rclex_docker/build.ex:143:22: Mix.Tasks.RclexDocker.Build.parse_args/1

     warning: a struct for Mix.Tasks.RclexDocker.Push.Options is expected on struct update:

         %Mix.Tasks.RclexDocker.Push.Options{acc | latest: true}

     but got type:

         dynamic()

     where "acc" was given the type:

         # type: dynamic()
         # from: lib/mix/tasks/rclex_docker/push.ex:118:43
         acc

     when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Push.Options{}".

     hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:

         user = some_function()
         %User{user | name: "John Doe"}

     it is enough to write:

         %User{} = user = some_function()
         %{user | name: "John Doe"}

     typing violation found at:
     │
 121 │         "--latest" -> %Options{acc | latest: true}
     │                       ~
     │
     └─ lib/mix/tasks/rclex_docker/push.ex:121:23: Mix.Tasks.RclexDocker.Push.parse_args/1

     warning: a struct for Mix.Tasks.RclexDocker.Push.Options is expected on struct update:

         %Mix.Tasks.RclexDocker.Push.Options{acc | multi: true}

     but got type:

         dynamic()

     where "acc" was given the type:

         # type: dynamic()
         # from: lib/mix/tasks/rclex_docker/push.ex:118:43
         acc

     when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Push.Options{}".

     hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:

         user = some_function()
         %User{user | name: "John Doe"}

     it is enough to write:

         %User{} = user = some_function()
         %{user | name: "John Doe"}

     typing violation found at:
     │
 122 │         "--multi" -> %Options{acc | multi: true}
     │                      ~
     │
     └─ lib/mix/tasks/rclex_docker/push.ex:122:22: Mix.Tasks.RclexDocker.Push.parse_args/1

Generated rclex_docker app
```

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates this repository’s Elixir/Erlang target matrix to reflect the Elixir 1.20 release while keeping the project’s “latest” CI/recommended tag on the previous Elixir minor, and refreshes dev/test dependencies accordingly.

Changes:

  • Updated documented supported Docker tags (and deprecated tag list) to include Elixir 1.20 / OTP 29 and set latest to Humble + Elixir 1.19.5 / OTP 28.5.
  • Updated build/push target image tuples to the new Hex.pm Elixir base images and build dates, and adjusted .tool-versions to match the chosen “latest” toolchain.
  • Ran dependency updates (mix.lock changes) and tightened accumulator typing in parse_args/1 to address a type inference warning.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
README.md Updates the published CI/recommended and deprecated Docker tag lists to match the new Elixir/Erlang targets.
mix.lock Bumps dev/test tooling dependencies after mix deps.update --all.
lib/mix/tasks/rclex_docker/push.ex Narrows Enum.reduce/3 accumulator type to %Options{} for cleaner type inference.
lib/mix/tasks/rclex_docker/build.ex Same parse_args/1 accumulator type narrowing as in push task.
lib/mix/tasks/rclex_docker.ex Updates target base images (Elixir/Erlang/Ubuntu/build-date) and the “latest” tuple to 1.19.5/OTP 28.5.
.tool-versions Aligns local toolchain with the chosen “latest” (Erlang 28.5, Elixir 1.19.5-otp-28).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@takasehideki
takasehideki merged commit 9081dc4 into main Jun 9, 2026
1 check passed
@takasehideki
takasehideki deleted the bump_202605 branch June 9, 2026 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants